﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Libreria.SICOM.Negocio;
using Libreria.SICOM.Modelo;
using System.Configuration;

namespace Web.SICOM.Controllers
{
    public class UnidaddeMedidaController : Controller
    {
        //
        // GET: /UnidaddeMedida/

        public ActionResult Index()
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            UnidaddeMedidaNegocio unidadbo = new UnidaddeMedidaNegocio();
            ViewData.Model = unidadbo.consultarUnidadesdeMedida(ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            if (((List<UnidaddeMedida>)ViewData.Model).Count == 0)
            {
                ViewData.Model = "No Hay Datos de unidades de medida Asociados";

            }
            return View();
        }

        public ActionResult Crear()
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Insertar(UnidaddeMedida unidad)
        {
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            List<UnidaddeMedida> unidadesbo = new UnidaddeMedidaNegocio().consultarUnidadesdeMedida(cdc);
            for (int i = 0; i <= unidadesbo.Count - 1; i++)
            {


                if (unidadesbo[i].Nombre == unidad.Nombre)
                {
                    ModelState.AddModelError("Nombre", "***El Nombre especificado ya se encuentra en uso***");
                }

            }
            if (!ModelState.IsValid)
            {
                return View("Crear", unidad);
            }

            Int32? id = unidad.Identificador;
            String name = unidad.Nombre;
            new UnidaddeMedidaNegocio().crearUnidaddeMedida(id, name, cdc);
            return RedirectToAction("Index");
        }

        public ActionResult Editar(Int32? id)
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            UnidaddeMedidaNegocio unidadbo = new UnidaddeMedidaNegocio();
            ViewData.Model = unidadbo.consultarPorIdentificador(id, ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString);
            return View();
        }

        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Actualizar(UnidaddeMedida unidad)
        {

            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            List<UnidaddeMedida> unidadesbo = new UnidaddeMedidaNegocio().consultarUnidadesdeMedida(cdc);
            for (int i = 0; i <= unidadesbo.Count - 1; i++)
            {
                if (unidadesbo[i].Nombre == unidad.Nombre)
                {
                    ModelState.AddModelError("Nombre", "El Nombre especificado ya se encuentra en uso.");
                }
            }

            if (!ModelState.IsValid)
            {
                return View("Editar", unidad);
            }
            Int32? id = unidad.Identificador;
            String name = unidad.Nombre;
            new UnidaddeMedidaNegocio().actualizarUnidaddeMedida(id, name, cdc);
            return RedirectToAction("Index");
        }


        public ActionResult Eliminar(UnidaddeMedida nuevounidad)
        {
            if (Session["Autenticado"] != "True")
            {
                return RedirectToAction("Index", "Inicio");
            }
            String cdc = ConfigurationManager.ConnectionStrings["SICOM"].ConnectionString;
            Int32? id = nuevounidad.Identificador;
            List<Variable> listadevariable = new List<Variable>();
            Variable variable = new Variable(cdc);
            variable.Identificador = null;
            variable.Nombre = null;
            variable.Unidad = id;

            listadevariable = variable.consultar();
            if (listadevariable.Count == 0)
            {
                new UnidaddeMedidaNegocio().eliminarUnidaddeMedida(id, "null", cdc);
                return RedirectToAction("Index");
            }

            ModelState.AddModelError("Identificador", " No se puede eliminar la unidad de medida especificada, se encuentra en uso.");
            UnidaddeMedidaNegocio unidadesbo = new UnidaddeMedidaNegocio();
            ViewData.Model = unidadesbo.consultarUnidadesdeMedida(cdc);
            return View("Index", ViewData.Model);


        }
    }
}
